﻿using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        int?[] a = { null, 1, 2, 3, null, null, null, 4, 5, 6, 7, null, null, 8, 9, 10 };
        var subArrays = SplitArray(a);

        // 打印子数组
        foreach (var subArray in subArrays)
        {
            Console.WriteLine($"[{string.Join(", ", subArray)}]");
        }
    }

    static List<List<int>> SplitArray(int?[] array)
    {
        var result = new List<List<int>>();
        var currentList = new List<int>();

        foreach (var item in array)
        {
            if (item != null)
            {
                // 如果元素不为 null，添加到当前列表
                currentList.Add((int)item);
            }
            else if (currentList.Count > 0)
            {
                // 遇到 null，且当前列表有数据，则添加当前列表到结果，并重置当前列表
                result.Add(new List<int>(currentList));
                currentList.Clear();
            }
        }

        // 如果最后一组为非空数组，也需要添加到结果中
        if (currentList.Count > 0)
        {
            result.Add(currentList);
        }

        return result;
    }
}